package com.itheima.mapper;

import com.itheima.pojo.Menu;
import com.itheima.pojo.Menu2;
import com.itheima.pojo.Permission;
import com.itheima.pojo.Role;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;
import java.util.Set;

public interface RoleMapper {
    Set<Role> selectByUserId(@Param("id") Integer id);

    List<Menu2> getRoleMenus(Map map);

    List<Integer> getMenus(@Param("roleId") Integer roleId);

    List<Role> findAll();

    List<Integer> findRoleIdsByUserId(Integer id);
    List<Role> findByCondition(@Param("queryString") String queryString);
    //       新增角色
    void add(Role role);
    //       新增角色和菜单的中间表关系
    void setRoleAndMenu(@Param("id") Integer id, @Param("menuIds") Integer[] menuIds);
    //       新增角色和权限的中间表关系
    void setRoleAndPermission(@Param("id") Integer id, @Param("keywordIds") Integer[] keywordIds);
    //        查询所有权限
    List<Permission> findPermission();
    //         查询所有菜单
    List<Menu> findMenu();
    //          根据角色id查询权限id
    List<Integer> findPermissionIdsByRoleId(@Param("id") Integer id);
    //           根据角色id查询菜单id
    List<Integer> findMenuIdsByRoleId(@Param("id") Integer id);
    //        将角色和权限的中间表删除
    void deleteAssociationWithPermission(@Param("id") Integer id);
    //        将角色和菜单的中间表删除
    void deleteAssociationWithMenu(@Param("id") Integer id);
    //        更新角色
    void edit(Role role);
    //         删除角色
    void deleteRole(@Param("id") Integer id);
    //          判断角色和用户之间的关系
    Integer checkUserAndRole(@Param("id") Integer id);

    void menuEdit(Menu menu);
}
